The present invention relates in general to computer displays and in particular to a system and method for providing wholly or partially transparent windows in a display for a window-based operating system.
Many operating systems in use today provide a window-based display. A window is generally a rectangular region of the display screen, inside which application data is presented to the user. Typically, each application has one or more associated windows, and multiple windows can be displayed concurrently in a “desktop” image on a display screen. Each application generates the data to be displayed in its window(s). The operating system usually provides various window management functions (e.g., selecting, resizing, hiding, or repositioning windows) so that the user can control the arrangement of windows on the desktop.
An example of a desktop image with two windows is shown in FIG. 1. Desktop image 100 includes windows 102, 104. Each window has a title bar 106, 108 that contains a title for the window. Title bars 106, 108 also provide an interface for window management functions via drop-down menus and/or buttons (not shown).
Some operating systems (e.g., certain versions of Microsoft Windows) provide function calls that an application programmer can invoke to make windows either wholly transparent or semi-transparent (translucent) under certain conditions (e.g., while a user is moving the window). Transparency enables a user to see what is behind a window without removing the front window from the screen. For instance, in FIG. 1, window 104 obscures a portion of window 102; if window 104 is made wholly transparent or translucent, that portion of window 102 becomes wholly or partially visible.
In existing operating systems, window transparency can place a heavy burden on the system memory bandwidth. For instance, in the Microsoft Windows operating system, pixel data for each window on the desktop is normally stored in a display memory (e.g., a frame buffer). Window transparency is enabled by drawing each window that can become transparent in a “layered” mode, in which the pixel data for the window is stored in a main system memory and periodically block transferred to the display memory. The window can then be made semi-transparent by blending the pixel data for the window with the underlying pixel data in the display memory during the block transfer, or wholly transparent by ignoring the pixel data for the window. Because each block transfer consumes bandwidth on the system memory bus, having a large number of layered windows, as is the case in existing systems that support transparency on a global basis, can perceptibly degrade system response.
Improved systems and methods for supporting transparent windows with reduced memory bandwidth requirements would therefore be desirable.